package com.huantai.common.exception;

import java.util.List;

import com.huantai.common.message.BusinessMessage;
import com.huantai.common.util.StringUtil;

/**
 * 自定义系统异常
 * 
 * @author Ma Chao
 * @version 2018年4月17日 下午2:23:58
 */
public class SystemException extends RuntimeException {
    private static final long serialVersionUID = 1L;
    /** 默认异常信息 */
    private static final String DEFAULT_MESSAGE = "系统异常";

    /**
     * 异常信息归集
     * 
     * @param titleMessage 异常标题
     * @param businessMessages 异常信息集合
     * @return 异常信息
     */
    protected static <T extends BusinessMessage> String fetchMessage(String titleMessage,
            List<T> businessMessages) {
        StringBuilder message = new StringBuilder();
        if (StringUtil.isEmpty(titleMessage)) {
            message.append(DEFAULT_MESSAGE);
        } else {
            message.append(titleMessage).append(":\n");
        }
        if (businessMessages != null) {
            for (BusinessMessage bizMsg : businessMessages) {
                message.append(bizMsg.getMessage()).append(";\n");
            }
        }
        return message.toString();
    }

    /**
     * 构造函数
     */
    public SystemException() {
        super(DEFAULT_MESSAGE);
    }

    /**
     * 构造函数
     * 
     * @param message 异常消息
     */
    public SystemException(String message) {
        super(message);
    }

    /**
     * 构造函数
     * 
     * @param cause 异常原因
     */
    public SystemException(Throwable cause) {
        super(cause);
    }

    /**
     * 构造函数
     * 
     * @param message 异常消息
     * @param cause 异常原因
     */
    public SystemException(String message, Throwable cause) {
        super(message, cause);
    }
}
